import { TOKENNAME, HTTP_REQUEST_URL, LOGIN_PAGE_PATH, DEFAULT_LOGIN_PLATFORM,APPID } from '@/config/app.js';
import Cache from '@/utils/cache.js';

// 防止重复跳转的全局标识
let isRedirecting = false;

/**
 * 处理登录逻辑
 * @param {string} platform - 平台类型（h5、wechat-mp、custom）
 * @returns {Promise} - 返回登录结果
 */
export const handleLogin = async (platform = DEFAULT_LOGIN_PLATFORM) => {
  if (isRedirecting) return; // 避免重复跳转
  isRedirecting = true;

  try {
    // 清除本地 Token
    Cache.remove(TOKENNAME);

    // 根据平台选择登录方式
    switch (platform) {
      case 'h5':
        await wechatH5Login();
        break;
      case 'wechat-mp':
        await wechatMpLogin();
        break;
      case 'custom':
      default:
        await customLogin();
        break;
    }
  } catch (error) {
    console.error('登录失败:', error);
    throw error;
  } finally {
    isRedirecting = false;
  }
};

/**
 * 自定义登录页面登录
 */
const customLogin = async () => {
  uni.showToast({
    title: '请登录',
    icon: 'none',
    duration: 2000,
  });
  setTimeout(() => {
    uni.reLaunch({ url: LOGIN_PAGE_PATH });
  }, 1500);
};

 /**
  * 从 URL 中提取 code 参数
  * @returns {string} - 返回 code 值
  */
 const getCodeFromUrl = () => {
   const urlParams = new URLSearchParams(window.location.search);
   return urlParams.get('code');
 };
/**
 * 微信 H5 授权登录
 */
const wechatH5Login = async () => {
  const appId = APPID; // 替换为你的微信 AppID
  const code = getCodeFromUrl(); // 从 URL 中提取 code

  if (code) {
    // 如果有 code，直接发送后端请求登录
    try {
      const res = await uni.request({
        url: `${HTTP_REQUEST_URL}/user/login/codeLogin`,
        method: 'POST',
        data: { code },
      });

      if (res.data.code === 200) {
        // 登录成功，存储 Token
        Cache.set(TOKENNAME, res.data.token);
        console.log('登录成功:', res.data);
        uni.showToast({
          title: '登录成功',
          icon: 'success',
        });
        setTimeout(() => {
          uni.reLaunch({ url: '/pages/index/index' }); // 跳转到首页
        }, 1500);
      } else {
        throw new Error(res.data.msg || '登录失败');
      }
    } catch (error) {
      console.error('登录失败:', error);
      uni.showToast({
        title: error.message || '登录失败',
        icon: 'none',
      });
    }
  } else {
    // 如果没有 code，跳转到微信授权页面
	let redirectUri = window.location.href
    const encodedRedirectUri = encodeURIComponent(redirectUri);
    const authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodedRedirectUri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;
    window.location.href = authUrl;
  }
};

/**
 * 微信小程序登录
 */
const wechatMpLogin = async () => {
  // 微信小程序登录逻辑
  const { code } = await uni.login({
    provider: 'weixin',
    onlyAuthorize: true,
  });
  const res = await uni.request({
    url: `${HTTP_REQUEST_URL}/user/login/codeLogin`,
    method: 'POST',
    data: { code },
  });
  if (res.data.code === 200) {
    Cache.set(TOKENNAME, res.data.token); // 存储 Token
  } else {
    throw new Error(res.data.msg || '登录失败');
  }
};